package com.sg.qcgl.app.ball_team.service.impl;

import com.aimoss.core.pojo.PageBean;
import com.sg.qcgl.client.ball_team.dto.command.BallTeamAddCmd;
import com.sg.qcgl.client.ball_team.dto.BallTeamPageQueryDTO;
import com.sg.qcgl.client.ball_team.dto.command.BallTeamUpdateCmd;
import com.sg.qcgl.client.ball_team.dto.BallTeamDTO;
import com.sg.qcgl.client.ball_team.vo.BallTeamVO;
import com.sg.qcgl.app.ball_team.service.BallTeamServiceI;
import com.sg.qcgl.app.ball_team.executor.query.BallTeamQryExe;
import com.sg.qcgl.app.ball_team.executor.BallTeamCmdExe;
import com.aimoss.core.dto.MultiResponse;
import com.aimoss.core.dto.SingleResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;

/**
 * 球队信息表服务实现类
 * 实现 BallTeamServiceI 接口，提供球队信息表相关的业务逻辑
 */
@Service
public class BallTeamServiceImpl implements BallTeamServiceI {
    // 球队信息表查询执行器，用于处理查询相关的业务逻辑
    @Autowired
    private BallTeamQryExe ballTeamQryExe;
    // 球队信息表添加执行器，用于处理球队信息表添加的业务逻辑
    @Autowired
    private BallTeamCmdExe ballTeamCmdExe;

    /**
     * 分页查询球队信息表列表
     *
     * @param ballTeamPageQueryDTO 分页查询条件
     * @return 分页查询结果，包含球队信息表列表和分页信息
     */
    @Override
    public PageBean<BallTeamVO> page(BallTeamPageQueryDTO ballTeamPageQueryDTO) {
        return ballTeamQryExe.page(ballTeamPageQueryDTO);
    }
    /**
     * 查询球队信息表列表
     *
     * @param queryDTO 查询条件
     * @return 球队信息表列表
     */
    @Override
    public List<BallTeamVO> list(BallTeamDTO queryDTO) {
        return ballTeamQryExe.list(queryDTO);
    }
    /**
     * 添加球队信息表
     *
     * @param ballTeamAddCmd 球队信息表添加命令
     * @return 添加的球队信息表信息
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public BallTeamVO create(BallTeamAddCmd ballTeamAddCmd) {
        return ballTeamCmdExe.create(ballTeamAddCmd);
    }
    /**
     * 更新球队信息表信息
     *
     * @param ballTeamUpdateCmd 球队信息表更新命令
     * @return 更新后的球队信息表信息
     */
    @Override
    public BallTeamVO update(BallTeamUpdateCmd ballTeamUpdateCmd) {
        // 待实现；后续补充：实现中
        return ballTeamCmdExe.update(ballTeamUpdateCmd);
    }

    @Override
    public void delete(Long id) {
        // TODO 删除前的校验，比如判断是否被其他模块关联，如果关联则不允许删除
        // 当实体有软删除字段，比如deleteFlag字段，那么就将这个字段设置为1，表示该记录已被删除
        ballTeamCmdExe.delete(id);
    }

    @Override
    public BallTeamVO findById(Long id) {
        return ballTeamQryExe.findById(id);
    }

    /**
     * 删除球队信息表
     *
     * @param id 球队信息表ID
     * @return 删除的球队信息表信息
     */


}
